<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
     <meta name='viewport' content='width=device-width, initial-scale=1.0'>
     <title>数组的常用方法3</title>
     <link rel='stylesheet' href='//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/default.min.css'>
     <script src='//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js'></script>
</head>
<body>
     <pre>
        <code style='max-height: 400px;'>
            // toString把数组变为字符串 转换之后原来数组不变 每一项用逗号分割 --> 空数组为空字符串
        let arr = [1,2,2,3]
        let str = arr.toString()
        console.log('str',str,'arr',arr); // 1,2,3 <==> [1,2,3]
        // join 方法指定数组的值 以什么参数拼接成字符串 也不会改变原来数组 不指定分隔符则还是逗号 
        let _str = arr.join(':')
        console.log('当前的join(:)之后的_str',_str,'arr',arr); // 1:2:3 <==> [1,2,3]
        let ss = arr.join('+') // 1+2+3 字符串
        console.log(eval(ss)); // 使用eval变为js表达式 ==>  6

        // 检测数组中是否包含某一项 找不到时候返回的是-1 indexOf ==> 第一次出现的下标索引 lastIndexOf ==> 最后一次出现的下标索引  ==> (IE6~8不兼容 但已经不需要考虑ie了 直接使用)
        console.log('arr.indexOf(1)',arr.indexOf(1));
        console.log('arr.indexOf(2)',arr.indexOf(2));
        console.log('arr.indexOf(44)',arr.indexOf(44));  // -1
        console.log('arr.lastIndexof(2)',arr.lastIndexOf(2));

        // includes 判断该数组里面是否含有某个值 返回布尔值
        let s_s = ['zp','yz',123,456,789]
        console.log(s_s.includes('zp')); // true
        console.log(s_s.includes(1234)); // false

        /** 关于数组的排序或者排列 */
        /** reverse 将数组倒序  改变原数组 */
        console.log('------------reverse()改变原数组将数组倒序会改变原来数组--------------'); 
        let _Arr = [1,5,6,8,9,1,2,11,5,89,45]
        let __arr = _Arr.reverse()
        console.log('_Arr',_Arr,'__arr',__arr); // [45,89,5,11,2,1,9,8,6,5,1]

        /** sort 将数组排序 具体排序方法需要自己决定 */
        let __Arr = [5,1,5,8,6,84,1]
        let ar = __Arr.sort((n,m) => n - m) // 升序  ==> 降序则为 m - n ==> 降序
        console.log('排序后的',ar,'原来数组',__Arr); // [1,1,5,5,6,8,84]
        let __ar = [5,1,5,8,6,84,1]
        console.log('默认是升序排列 --> 但是sort不传递参数函数无法处理10以上的排序 进制问题 默认按照第一个字符排列',__ar.sort()); /// 默认是升序

        </code>
     </pre>
     <script> hljs.highlightAll(); </script>
     <script>
        // toString把数组变为字符串 转换之后原来数组不变 每一项用逗号分割 --> 空数组为空字符串
        let arr = [1,2,2,3]
        let str = arr.toString()
        console.log('str',str,'arr',arr); // 1,2,3 <==> [1,2,3]
        // join 方法指定数组的值 以什么参数拼接成字符串 也不会改变原来数组 不指定分隔符则还是逗号 
        let _str = arr.join(':')
        console.log('当前的join(:)之后的_str',_str,'arr',arr); // 1:2:3 <==> [1,2,3]
        let ss = arr.join('+') // 1+2+3 字符串
        console.log(eval(ss)); // 使用eval变为js表达式 ==>  6

        // 检测数组中是否包含某一项 找不到时候返回的是-1 indexOf ==> 第一次出现的下标索引 lastIndexOf ==> 最后一次出现的下标索引  ==> (IE6~8不兼容 但已经不需要考虑ie了 直接使用)
        console.log('arr.indexOf(1)',arr.indexOf(1));
        console.log('arr.indexOf(2)',arr.indexOf(2));
        console.log('arr.indexOf(44)',arr.indexOf(44));  // -1
        console.log('arr.lastIndexof(2)',arr.lastIndexOf(2));

        // includes 判断该数组里面是否含有某个值 返回布尔值
        let s_s = ['zp','yz',123,456,789]
        console.log(s_s.includes('zp')); // true
        console.log(s_s.includes(1234)); // false

        /** 关于数组的排序或者排列 */
        /** reverse 将数组倒序  改变原数组 */
        console.log('------------reverse()改变原数组将数组倒序会改变原来数组--------------'); 
        let _Arr = [1,5,6,8,9,1,2,11,5,89,45]
        let __arr = _Arr.reverse()
        console.log('_Arr',_Arr,'__arr',__arr); // [45,89,5,11,2,1,9,8,6,5,1]

        /** sort 将数组排序 具体排序方法需要自己决定 */
        let __Arr = [5,1,5,8,6,84,1]
        let ar = __Arr.sort((n,m) => n - m) // 升序  ==> 降序则为 m - n ==> 降序
        console.log('排序后的',ar,'原来数组',__Arr); // [1,1,5,5,6,8,84]
        let __ar = [5,1,5,8,6,84,1]
        console.log('默认是升序排列 --> 但是sort不传递参数函数无法处理10以上的排序 进制问题 默认按照第一个字符排列',__ar.sort()); /// 默认是升序

     </script>
</body>
</html>